﻿/*************************************************************************************

- CLR版本：        4.0.30319.42000
- 类 名 称：       ToolBox
- 机器名称：       YTE
- 命名空间：       LD.Tool
- 文 件 名：       ToolBox
- 创建时间：       2022/6/9 12:00:26
- 作    者：       YTE
- 说   明：
- 修改时间：
- 修 改 人：
  *************************************************************************************/

using LD.Host;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace LD.Tool
{
    /// <summary>
    /// 工具箱
    /// </summary>
    public class ToolBox
    {
        /// <summary>
        /// 继承子类
        /// </summary>
        /// <returns></returns>
        private IEnumerable<Type> GetClasses()
        {
            //反射
            var typess = Assembly.GetCallingAssembly().GetTypes()
                .Where(p => p.BaseType == typeof(BaseTool));

            return typess;
        }
        public Dictionary<string, List<TB_Tool>> GetList()
        {
            Dictionary<string, List<TB_Tool>> dics = new Dictionary<string, List<TB_Tool>>();

            List<TB_Tool> tools = new List<TB_Tool>();

            var c_class = GetClasses();
            foreach (var item in c_class)
            {
                ToolAttribute toolAttribute = (ToolAttribute)item.GetCustomAttribute(typeof(ToolAttribute), true);
                if (toolAttribute != null && toolAttribute.Show)
                {
                    tools.Add(new TB_Tool()
                    {
                        ClassName = item.Name,
                        Text = toolAttribute.Text,
                        Name = toolAttribute.Text,
                        ToolType = toolAttribute.ToolType.ToString(),
                        FrmParam = toolAttribute.FrmParam,
                    });
                }
            }
            foreach (var item in Enum.GetNames(typeof(ToolEnum)))
            {
                dics.Add(item, tools.Where(p => p.ToolType == item).ToList());
            }
            return dics;
        }
    }
}
